昨日談到為了讓資料工整、乾淨又漂亮(有嗎),
因此我們會給予一些資料限制(Constraint),
今天要介紹的是UNIQUE 和NOT NULL,
不能為空值意思是「必填」,在插入資料時,該欄位不能是空的,
像平常在註冊網站會員時,
就可以看到表單會規定帳號、密碼、聯絡信箱和地址必填等等,
就是在說這些資料必須NOT NULL。
在生活中我們常常會規定某些資料「不能重複」,
如果重複了會造成一些問題,
例如說身分證字號、抽獎流水號、電話號碼、車牌等等,
這些都是用想的就知道絕對不能重複的資料,
那這些資料就具有UNIQUE 唯一值的特性。
當我們規定資料欄位是UNIQUE,表示我們規定這個欄位中不能有重複的值,
例如我們在建立班級資料表時,想創建座號和名字兩個欄位,
我們會規定座號不可以重複,但名字的話可以重複,
(應該不會要人改名吧!)
因此座號(id)就會限制是UNIQUE。
我們來創建一張class表
create table class
(id INT NOT NULL,
full_name NVARCHAR(30),
UNIQUE(id) );
插入兩行資料,一行是「id:1,full_name:cinna」,
一行是「id:1,full_name:yyu」,
INSERT INTO class (id,full_name)
VALUES (1,"cinna"),(1,"yyu");
執行上面兩行以後,會發現MySQL報錯
Error Code: 1062. Duplicate entry '1' for key 'class.id'
我們規定id是UNIQUE唯一值,但現在兩個id重複了,
所以會執行失敗。
如果把重複的id改掉,就會成功插入兩筆資料。
INSERT INTO class (id,full_name)
VALUES (1,"cinna"),(2,"yyu");
現在對下指令有沒有越來越熟了呢?
明天會再介紹另外一個超級重要的資料限制(Constraint),
一天十分鐘,一起學習囉!